Method and apparatus for locating a unit in an assembly

ABSTRACT

The present embodiments disclose a method and apparatus for locating a unit in an assembly. According to the embodiments, a unit in an assembly is located. An identification of the target unit in the assembly is obtained. An image of at least a part of the assembly is acquired. The image includes a visual code associated with the part. The visual code is decoded to obtain an identification of at least one unit in the part. It is determined if the target unit is included in the part responsive to identification of a match of the target unit with the identification of the at least one unit. There is further disclosed a corresponding apparatus, assembly, and fault diagnosis device.

CROSS-REFERENCE TO RELATED APPLICATION

This application claims priority under 35 U.S.C. § 119 from ChinesePatent Application No. 201410178187.4 filed Apr. 29, 2014, the entirecontents of which are incorporated herein by reference.

BACKGROUND

The present embodiment(s) relates to fault diagnosis, and morespecifically, to a method and apparatus for locating a unit in anassembly.

At present, many electronic and/or mechanical devices have aself-diagnosis function for detecting whether hardware units and/orsoftware units in some assemblies of a device are in a normal workingstate. The term “unit” used here refers to a component providing acorresponding function in a device; the term “assembly” refers to anapparatus composed of one or more such units. By way of example, anassembly may be a motherboard in an electronic device, while a unit maycomprise various slots, ports and other components on the motherboard.

One important aspect of the diagnostic function is alarming a human user(e.g., a technical expert or engineer) when detecting a fault orabnormality occurring to some unit, such that the user can identify andlocate the failing unit. As an example, the light path diagnostics is acommon diagnostics technology in the industry. Generally, a lightemitting element such as light emitting diode (LED) is arranged nearby aspecific unit or module in the device. When a unit is detected to have afault, an associated LED may be driven to emit light so as to generatean intuitive prompt, such that the human user can identify and locatethe failing unit.

Light path diagnostics has some drawbacks, e.g., the LED per se needs abattery or super capacity to supply power, which increases the totalpower consumption of the device. Moreover, the LED has a certain servicelife, which increases costs for LED maintenance and replacement.Moreover, when the LED per se fails, it would be impossible to identifya corresponding failing unit. Additionally, it inevitably increases thedifficulty and complexity of wiring to equip LEDs for so many units,which might also increase the volume and weight of the device. Thesedrawbacks are particularly outstanding for those portable and smalldevices.

Besides the purpose of fault diagnosis, it is likewise required toidentify or locate a target unit in an assembly in many other cases. Forexample, even no units in the assembly fail, a technician may likewiseneed to locate any target unit in the assembly for various purposes suchas maintenance, overhaul, and replacement.

Therefore, it is desirable in the art to provide a solution for locatinga unit in an assembly more effectively.

SUMMARY

In order to solve the above and other potential problems, a solution isprovided for locating a unit(s) in an assembly.

In one aspect, an apparatus is provided for locating a target unit in anassembly. An imaging device is operatively coupled to the apparatus tocapture and transmit an image of the assembly. A processor receives theimage from the imaging device. The processor is programmed to obtain anidentification of a target unit in the assembly. The processor isfurther programmed to acquire an image of at least a part of theassembly. The image includes visual code associated with the part. Theprocessor is further programmed to decode the visual code to obtain anidentification of at least one unit in the part. The processor isfurther programmed to determine that the target unit is included in thepart responsive to the identification of the target unit matching theidentification of the at least one unit.

In another aspect, an assembly is provided. The assembly comprises atleast one component. The assembly further comprises an identificationproviding module, which is configured to provide an identification of atarget unit in the component. The assembly further comprises at leastone visual code associated with at least a part of the assembly. Thevisual code includes an identification of a component that includes theat least one component and is located in the part.

It would be understood through the following description that accordingto the embodiments, when it is needed to locate a specific target unitin an assembly, the assembly may provide an identification of the targetunit. Besides, one or more visual codes are arranged in advance in theassembly. Each visual code is associated with a part of the assembly andat least encodes the identifications of respective units in the part. Animage of the assembly portion including such visual codes may beacquired, and by decoding the visual codes, identifications ofrespective units in the corresponding part are obtained. Next, thelocation of the target unit may be determined through matching the unitidentification. In this way, a unit can be identified and located fastand accurately. Moreover, the costs associated with the locating unitcan be significantly decreased. Other features and advantages willbecome easily comprehensible through the description below.

These and other features and advantages will become apparent from thefollowing detailed description of the presently preferred embodiment(s),taken in conjunction with the accompanying drawings.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

Through the more detailed description of some embodiments of the presentdisclosure in the accompanying drawings, the above and other objects,features and advantages of the present disclosure will become moreapparent, wherein the same reference generally refers to the samecomponents in the embodiments of the present disclosure.

FIG. 1 shows an exemplary computer system which is applicable toimplement the embodiments.

FIG. 2 shows a schematic flow chart of a method for locating a unit inan assembly.

FIG. 3 shows a schematic diagram of a part of an assembly and itsassociated visual codes.

FIG. 4 shows a schematic block diagram of an assembly.

FIG. 5 shows a schematic block diagram of an apparatus for locating aunit in an assembly.

In the drawings, the same or similar reference numerals are used toindicate the same or similar elements.

DETAILED DESCRIPTION

Some preferable embodiments will be described in more detail withreference to the accompanying drawings, in which the preferableembodiments of the present disclosure have been illustrated. However,the present disclosure can be implemented in various manners, and thusshould not be construed to be limited to the embodiments disclosedherein. On the contrary, those embodiments are provided for the thoroughand complete understanding of the present disclosure, and completelyconveying the scope of the present disclosure to those skilled in theart.

Referring now to FIG. 1, in which an exemplary computer system/server(12) which is applicable to implement the embodiments is shown. Computersystem/server (12) is only illustrative and is not intended to suggestany limitation as to the scope of use or functionality of embodimentsdescribed herein.

As shown in FIG. 1, computer system/server (12) is shown in the form ofa general-purpose computing device. The components of computersystem/server (12) may include, but are not limited to, one or moreprocessors or processing units (16), a system memory (28), and a bus(18) that couples various system components including system memory (28)to processor (16).

Bus (18) represents one or more of any of several types of busstructures, including a memory bus or memory controller, a peripheralbus, an accelerated graphics port, and a processor or local bus usingany of a variety of bus architectures. By way of example, and notlimitation, such architectures include Industry Standard Architecture(ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA)bus, Video Electronics Standards Association (VESA) local bus, andPeripheral Component Interconnect (PCI) bus.

Computer system/server (12) typically includes a variety of computersystem readable media. Such media may be any available media that isaccessible by computer system/server (12), and it includes both volatileand non-volatile media, removable and non-removable media.

System memory (28) can include computer system readable media in theform of volatile memory, such as random access memory (RAM) (30) and/orcache memory (32). Computer system/server (12) may further include otherremovable/non-removable, volatile/non-volatile computer system storagemedia. By way of example only, storage system (34) can be provided forreading from and writing to a non-removable, non-volatile magnetic media(not shown and typically called a “hard drive”). Although not shown, amagnetic disk drive for reading from and writing to a removable,non-volatile magnetic disk (e.g., a “floppy disk”), and an optical diskdrive for reading from or writing to a removable, non-volatile opticaldisk such as a CD-ROM, DVD-ROM or other optical media can be provided.In such instances, each can be connected to bus (18) by one or more datamedia interfaces. As will be further depicted and described below,memory (28) may include at least one program product having a set (e.g.,at least one) of program modules that are configured to carry out thefunctions of the embodiments.

Program/utility (40), having a set (at least one) of program modules(42), may be stored in memory (28) by way of example, and notlimitation, as well as an operating system, one or more applicationprograms, other program modules, and program data. Each of the operatingsystem, one or more application programs, other program modules, andprogram data or some combination thereof, may include an implementationof a networking environment. Program modules (42) generally carry outthe functions and/or methodologies of embodiments as described herein.

Computer system/server (12) may also communicate with one or moreexternal devices (14) such as a keyboard, a pointing device, a display(24), etc.; one or more devices that enable a user to interact withcomputer system/server (12); and/or any devices (e.g., network card,modem, etc.) that enable computer system/server (12) to communicate withone or more other computing devices. Such communication can occur viaInput/Output (I/O) interfaces (22). Still yet, computer system/server(12) can communicate with one or more networks such as a local areanetwork (LAN), a general wide area network (WAN), and/or a publicnetwork (e.g., the Internet) via network adapter (20). As depicted,network adapter (20) communicates with the other components of computersystem/server (12) via bus (18). It should be understood that althoughnot shown, other hardware and/or software components could be used inconjunction with computer system/server (12). Examples, include, but arenot limited to: microcode, device drivers, redundant processing units,external disk drive arrays, RAID systems, tape drives, and data archivalstorage systems, etc.

Hereinafter, the embodiments will be described in detail. According tothe exemplary embodiments, when a unit of an assembly of a device fails,or when it is desired to locate a target unit in an assembly out of anyother purposes, an identification of the target unit may be provided.Additionally, one or more visual codes are pre-arranged in the assembly,each visual code being associated with one part of the assembly and atleast encoding identifications of respective units in the part. For thetarget unit, an image of an assembly part including such visual codesmay be acquired, and identifications of respective units in thecorresponding parts can be obtained by decoding the visual codes. Then,the location of the target unit may be determined by matching the unitidentification. In this way, the target unit can be identified andlocated fast and accurately. Moreover, the costs associated withlocating the unit can be significantly reduced.

Only for the sake of discussion, a failing unit in an assembly may bedescribed as an example of a to-be-located target unit hereinafter.However, it should be understood that it is only exemplary, not intendedto limit the scope of the present embodiments in any manner. On thecontrary, the embodiments are applicable for any application scenariothat needs to locate a unit in an assembly.

Now, refer to FIG. 2, in which a flow chart of a method for locating aunit in an assembly according to the embodiments is presented. As anexample, when the embodiments are used to locate a failing unit in anassembly, the method (200) for example may be performed by a faultdiagnosis device used by a technician in charge of maintenance oroverhaul. For example, in some embodiments, a portable mobile device mayact as the fault diagnosis device and be configured to perform themethod (200), which will be described in detail hereinafter.

For the convenience of discussion, a device including or using anassembly will be called a “host device” hereinafter. As described above,the term “assembly” used here refers to an apparatus composed of aplurality of units in a host device, e.g., a motherboard in a computersystem. The term “unit” refers to a component for providing a specificfunction included in the assembly. As an example, a unit may comprise afield replaceable unit (FRU). Examples of FRU include, but not limitedto, various pluggable devices coupled to a central processing unit(CPU), a memory, a graphic acceleration card, an audio card, and thelike.

As shown in FIG. 2, at step (S201), an identification of a to-be-locatedtarget unit in an assembly is obtained. For example, in someembodiments, when the target unit is a failing unit, information like anidentification of the failing assembly may be provided when failure ofone or more units is detected. In some embodiments, the identificationof the target unit may be provided by the assembly per se.Alternatively, the identification of the target unit may also beprovided by any other appropriate apparatus in the host device.

According to the embodiments, examples of an identification of a targetunit include, but not limited to, an index, a serial number, a name orany other appropriate identification information of the unit.

Optionally, in some embodiments, information about the assembly per semay also be obtained, e.g., the identification, type, serial number,manufacturer, manufacturing date and the like of the assembly.Alternatively or additionally, in some embodiments, information aboutthe host device where the assembly is located may also be obtained. Forexample, suppose that the assembly is a motherboard, the informationabout the host device may include an identification, type, serialnumber, manufacturer, manufacturing date and the like of the hostcomputer using the motherboard.

According to the embodiments, at step (S201), identification and otheroptional information of the target unit may be obtained through variousmanners. For example, in some embodiments, an assembly in the hostdevice may be equipped with one or more display devices. Such displaydevices for example may be integrated with the assembly, such that whenit is needed to locate a specific target unit in the assembly (e.g.,when a failing unit is detected), the identification and other optionalinformation of the target unit may be displayed on such a displaydevice. Correspondingly, at step (S201), the identification and anyother information of the target unit may be read from the displaydevice.

In particular, in some embodiments, the display device for displaying anidentification of a target unit may be a low-power-consumptionpower-saving type display device. Examples of such power-saving displaydevice include, but not limited to, an electronic ink (E-ink) display.For example, suppose the assembly is a motherboard, then one or moreassociated E-ink displays may be integrated on the motherboard. As anexample, when a unit on a motherboard fails, failure information such asthe identification of the failing unit may be presented on acorresponding E-ink display. As already known, the E-ink display doesnot consume power when presenting contents, which only consumes powerwhen refurbishing the contents. In this way, the total power consumptionlevel may be effectively lowered.

In some embodiments, the identification and other optional informationof the target unit may be directly presented on a display deviceassociated with the assembly. In such an embodiment, at step (S201), adevice (e.g., a fault diagnosis device) performing the method (200) maydirectly read and identify the identification and other optionalinformation of the target unit as presented on the display device, andsuch information may be input into the fault diagnosis device using anyappropriate interaction technology. Correspondingly, the fault diagnosisdevice may receive the identification and other optional information ofthe target unit from the user at step (S201).

Alternatively, the identification and other optional information of thetarget unit may also be first encoded into a visual code. This visualcode is in turn presented on the display device associated with theassembly. According to the embodiments, examples of the visual codeinclude, but not limited to, quick response (QR) codes, bar codes, andthe like. Please note that any technology cable of encoding and/orcompressing information through graphics/image/video may be used incombination with the embodiments, and the scope is not limited in thisaspect. Correspondingly, in this embodiment, such visual codes may beread and decoded at step (S201) to obtain the identification and otheroptional information of the target unit.

Alternatively or additionally, in some embodiments, at step (S201), theidentification and other optional information of the target unit may bereceived from one or more ports associated with the assembly. Forexample, in some embodiments, when the target unit is a failing unit inthe assembly, responsive to detection of the failing unit in theassembly, the identification and other optional information of thetarget unit may be transferred to the fault diagnosis device or anyother appropriate device through a communication port such as auniversal serial bus (USB) associated with the assembly.

Alternatively or additionally, in some embodiments, the assembly mayprovide the identification and other optional information at leastpartially by means of a light emitting device (e.g., LED, etc.). Forexample, the assembly may drive the light emitting device associatedwith the target unit to emit light to thereby provide the identificationof the target unit. Alternatively, the light emitting device may beshared with a plurality of units on the assembly. At this point,different light emitting modes (e.g., light emitting time, flickeringpattern, and the like) may be used to indicate the identification of thetarget unit. Correspondingly, in this embodiment, at step (S201), theidentification of the target unit may be automatically identified bysending and identifying the light emitted from the light emitting unit.Alternatively or additionally, the identification of the target unit mayalso be determined manually by the user based on the light emitted bythe light emitting device, and inputted into the apparatus performingthe method (200).

In particular, in an embodiment of using the light emitting device toindicate the identification of the target unit, additional informationassociated with the assembly and/or host device may be provided togetherwith the identification of the target unit, e.g., a predefined lightemitting pattern of the light emitting device. Alternatively, in otherembodiments, such additional information may also be providedindependently. For example, in some embodiments, the assembly may beassociated with one or more visual codes. For the convenience ofdiscussion, the visual codes associated with the assembly (not a partthereof) may be called “assembly visual codes.” As an example, supposethe assembly is a motherboard, one or more visual codes (e.g., QR codes)may be arranged on the motherboard. Information associated with theassembly (a motherboard in this example) and/or host device may bepre-encoded in the assembly visual codes. Therefore, at step (S201),additional information associated with the assembly and/or host devicemay be obtained by reading and decoding the assembly visual codes.

Next, the method (200) proceeds to the step (S202), where an image of atleast a part of the assembly is acquired.

According to the embodiments, the assembly may be pre-partitioned intoone or more parts, each part comprising one or more units in theassembly. Please note that in the context of the present disclosure, apart does not necessarily include a complete unit. In other words,suppose only a part of the unit A is included in part B of the assembly,it may be regarded that the unit A is completely included in the part B.

Moreover, according to the embodiments, each part of the assembly mayinclude associated visual codes, e.g., QR codes, bar codes, and thelike. The visual codes may be integrated into a corresponding part. Asan example, when the assembly is a motherboard, the motherboard may bepre-partitioned into a plurality of regions, each region including oneor more elements on the motherboard. Each region may be arranged thereinwith corresponding visual codes encoding information of an element inthe art. Such visual codes may be provided by a manufacture or providerof the host device and/or assembly.

According to the embodiments, visual codes associated with a certainpart in the assembly at least encode identifications of respective unitsin the part. Alternatively, in some embodiments, the visual codes mayalso indicate additional information of the units in the part, e.g.,location information, model, production date, and the like.

As an example, FIG. 3 shows a schematic diagram of a part (301) of anassembly (300) and its associated visual code (302). In the example ofFIG. 3, the assembly (300) is a motherboard in a computing device. Thepart (301) of the motherboard (300) is associated with the visual code(302). In this example, the visual code (302) may be a QR code arrangedin the part (301) to indicate identifications of respective units(303)-(310) in the part (301). Optionally, the visual code (302) mayalso indicate the locations of one or more units in the units(303)-(310) and/or any other information about fault diagnosis.

Additionally, it may also be seen from FIG. 3 that the assembly (300)comprises the above described assembly visual code (311). The assemblyvisual code (311) for example may be used to include information aboutthe assembly (300) and the host device where the assembly (300) islocated, and/or any other information.

According to the embodiments, if the apparatus (e.g., a fault diagnosisdevice) performing the method (300) has an image capturing module, thenat step (S202), the apparatus may directly capture images of one or moreparts of the assembly. Please note that the term “image capturingmodule” here not only includes an image shooting device such as acamera, a video camera, and the like, but also includes a scanningmodule for scanning and/or identifying the visual codes, e.g., a scannerfor a QR code, a bar code, and the like. If the apparatus performing themethod (200) does not have an image capturing function, it is possibleto use another image capturing device to capture an image of a part ofthe assembly, and the fault diagnosis device can receive the image atstep (S202).

In particular, it should be understood that according to theembodiments, the image acquired at step (S202) does not necessarilyinclude a complete part. On the contrary, it is only necessary that theacquired image include a region including a visual code in the part.

Next, the method (200) proceeds to step (S203), where the visual codeincluded in the image acquired at step (S202) is decoded to obtainidentifications of respective units in the part associated with thevisual code. In particular, if it is determined that the image does notinclude any visual code, then the user may be prompted to re-acquire animage of other part of the assembly, and the method (200) may return tostep (S202) to continue execution.

In particular, in some embodiments, the acquired original image may becalibrated. For example, in some cases, the original image might not bea top view of the assembly part in consideration, which might causepotential failure to the visual code in the image when decoding. In thisway, in some embodiments, the image may be calibrated through rotation,panning and/or scaling, thereby at least obtaining the top view of thevisual code region. Specifically, in some embodiments, calibration maybe executed with respect to the whole original image. Alternatively, inorder to accelerate the processing speed, it is allowed to only performcalibration with respect to the image region including the visual code,thereby obtaining the top view of the visual code for decoding.

It should be understood that calibration of the image in decoding isoptional. For example, when the image acquired at step (S202) hasalready been a top view of the assembly part, the calibration operationmay be omitted. Moreover, the calibration on the image is not limited toaffine transformation. On the contrary, any technology capable ofcalibrating or adjusting the image angle may be used in combination withthe embodiments, regardless of whether the technology is currently knownor future developed.

Next, at step (S204), the identification of the target unit as acquiredat step (S201) is matched to identifications of respective units asderived from decoding at step (S203) to determine whether the targetunit is included within the current part in question.

According to the embodiments, if it is determined at step (S204) thatone of unit identifications as decoded at step (S203) matches the unitof the target unit (branch “yes”), then it may be determined at step(S205) that the target assembly is included in the current part.Correspondingly, in some embodiments, the method (200) may proceed tostep (S206), where the target unit is identified to the user based onthe location information of the matching unit. As mentioned above, insome embodiments, the visual code associated with a part of the assemblymay not only include identifications of respective units in the part,but also may include location information of these units.

In such an embodiment, a location of the target unit may be decoded outfrom the visual code included in the image acquired at step (S202). Thelocation of the unit for example may be represented as a coordinate ofthe unit in the assembly or a part thereof. In some embodiments, thelocation information of the unit may be decoded together with the unitidentification at step (S203). Alternatively, in some other embodiments,the location information of the unit may also be separately decoded, forexample, at step (S206) or before. Afterwards, visual indication and/ornumerical value of the location of the target unit may be presented tothe user.

On the other hand, if it is determined at step (S204) that none of theidentifications of all units in the current part in question matches theidentification of the target unit as obtained at step (S201) (branch“No”), then it may be determined that the target unit is not in thecurrent part. At this point, the method (200) may proceed to step(S207), where the user is prompted to acquire an image of other part ofthe assembly so as to continue identifying the target unit.

In particular, in some embodiments, a guidance of a further part on theassembly may be provided to the user at step (S206). It would beunderstood that it is pre-determined by a manufacturer or provider ofthe host device in which parts of the assembly are arranged visualcodes. Therefore, the locations of respective parts including the visualcode in the assembly and their relative locations are known. In otherwords, there is predefined location information of the visual codesassociated with respective parts in the assembly. According to theembodiments, such predefined location information may be directlyencoded in visual codes associated with respective parts, encoded in theassembly visual codes, and/or saved at any other accessible locations.In this way, in some embodiments, guidance (e.g., arrow) pointing to afurther part in the assembly may be provided to the user based onpredefined location information of a visual code associated with thefurther part in the assembly. In this way, the user may locate thatfurther part of the assembly based on the guidance. At this point, themethod (200) may return to step (S202) to acquire images of other partsin the assembly.

It should be noted that steps (S206) and (S207) in method (200) areoptional. In some embodiments, when the target unit is found, the usermay be simply prompted. The user then may locate the target unitmanually in the current part. On the other hand, when it is determinedthat the target unit is not in the current part, the user may be simplynotified, without providing any guidance information.

FIG. 4 shows a block diagram of an assembly (400) according to theembodiments. As shown in FIG. 4, the assembly includes at least one unit(401), an identification providing module (402), and at least one visualcode (403).

According to the embodiments, the identification providing module (402)may be configured to provide an identification of any target unit in atleast one unit (401). For example, when the embodiments are used forfault detection, the identification providing module (402) may beconfigured to provide an identification of a failing unit when thefailing unit is detected from among at least one unit (401). Further,the identification providing module (402) or other modules mayoptionally provide information about the assembly (400) or the hostdevice where the assembly (400) is located, as described above.

In particular, in some embodiments, the identification providing module(402) of the assembly (400) may include at least one of the following: adisplay driving module configured to drive a display device associatedwith the assembly to display the identification; a light emitting devicedriving module configured to drive a light emitting device associatedwith the target unit to emit light so as to provide the identification;and a communication port driving module configured to drive acommunication port associated with the assembly to transmit theidentification.

It should be noted that according to the embodiments, the displaydevice, light emitting device and/or communication port may beintegrated on the assembly (400). Alternatively, one or more of them mayalso be independent of the assembly (400). The scope of the presentembodiments is not limited in this aspect.

According to the embodiments, each of the at least one visual code (403)is associated with a specific part of the assembly (400) and at leastindicates identifications of one or more units located in the part.Optionally, as described above, the visual code (403) may also includeother relevant information of the unit, e.g., location. In someembodiments, the visual code (402) may be a QR code. Alternatively oradditionally, the visual code (402) may also be any other visual codesuch as bar code. In particular, in some embodiments, each of the visualcodes may also include location information of respective units locatedin the associated part.

Refer to FIG. 5, in which a block diagram of an apparatus (500) forlocating a unit in an assembly according to the embodiments. As shown inthe figure, according to the embodiments, the apparatus (500) comprises:an obtaining module (501) configured to obtain an identification of atarget unit in the assembly; an acquiring module (502) configured toacquire an image of at least a part of the assembly, which imageincludes visual code associated with the part; a decoding module (503)configured to decode the visual code to obtain an identification of atleast one unit in the part; and a determining module (504) configured todetermine that the target unit is included in the part responsive to theidentification of the target unit matching the identification of the atleast one unit.

In some embodiments, the obtaining module (501) may comprise at leastone of the following: a first obtaining module configured to read theidentification from a display device associated with the assembly; asecond obtaining module configured to determine the identification basedon light emitted by a light emitting element associated with the targetunit; and a third obtaining module configured to receive theidentification through a communication port associated with theassembly.

In some embodiments, the obtaining module is further configured toobtain additional information about at least one of the assembly and thehost device where the assembly is located. In some embodiments, theadditional information may be encoded in the assembly visual codeassociated with the assembly.

In some embodiments, the apparatus (500) may also comprise: an imagecalibrating module configured to calibrate the acquired image to atleast obtain a top view of the visual code for the decoding.

In some embodiments, the visual code includes location information ofthe at least one unit in the part. At this point, the apparatus (500)may also comprise: an identifying module configured to identify thetarget unit for the user based on the location information responsive todetermining that the target unit is included in the part.

In some embodiments, the apparatus (500) may also comprise: a guidingmodule configured to provide guidance pointing to a further part of theassembly to the user responsive to determining that the target unit isnot included in the part. In some embodiments, the guidance may beprovided based on predefined location information of a visual codeassociated with the other part.

In some embodiments, the visual code associated with the part mayinclude a QR code.

Please note that for the sake of clarity, FIG. 5 does not show optionalmodules or sub-modules included in the apparatus (500). However, itshould be understood that all features and operations as described aboveare applicable to the system (500), respectively, which will not bedetailed here. Moreover, the partitioning of modules or sub-modules inthe apparatus (500) is not restrictive, but exemplary, intended tologically describe its main functions or operations. The function of onemodule may be implemented through a plurality of modules; on thecontrary, a plurality of modules may be also implemented by one module.The scope is not limited in this aspect.

Moreover, the modules included in the apparatus (500) may be implementedin various manners, including software, hardware, firmware or anycombination thereof. For example, in some embodiments, the apparatus(500) may be implemented using software and/or firmware. Alternativelyor additionally, the system (500) may be implemented partially orcompletely based on hardware. For example, one or more modules in thesystem (500) may be implemented as an integrated circuit (IC) chip, anapplication-specific integrated circuit (ASIC), a system on chip (SOC),a field programmable gate array (FPGA), etc. The scope of the presentembodiments is not limited in this aspect.

As described above, the solution for locating units in the assemblyaccording to the embodiments is applicable to the identification of thefault unit. Embodiments include a fault diagnosis device. According tothe embodiments, the fault diagnosis device may be any suitable deviceincluding the apparatus (500) as shown in FIG. 5. In operation, theapparatus (500) may be configured to perform the method (200) asdiscussed with reference to FIG. 2. For example, in some embodiments,the fault diagnosis device may be implemented as a handheld mobiledevice such as a mobile phone, personal digital assistance (PDA), tabletcomputer, laptop computer, and so forth. Alternatively, the faultdiagnosis device may be implemented as a fixed device such as thecomputer system (12) as discussed with reference to FIG. 1.

The present embodiments may be employed in a system, a method, and/or acomputer program product. The computer program product may include acomputer readable storage medium (or media) having computer readableprogram instructions thereon for causing a processor to carry outaspects of the present embodiments.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations maybe assembler instructions, instruction-set-architecture (ISA)instructions, machine instructions, machine dependent instructions,microcode, firmware instructions, state-setting data, or either sourcecode or object code written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Smalltalk, C++ or the like, and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages. The computer readable program instructions mayexecute entirely on the user's computer, partly on the user's computer,as a stand-alone software package, partly on the user's computer andpartly on a remote computer or entirely on the remote computer orserver. In the latter scenario, the remote computer may be connected tothe user's computer through any type of network, including a local areanetwork (LAN) or a wide area network (WAN), or the connection may bemade to an external computer (for example, through the Internet using anInternet Service Provider). In some embodiments, electronic circuitryincluding, for example, programmable logic circuitry, field-programmablegate arrays (FPGA), or programmable logic arrays (PLA) may execute thecomputer readable program instructions by utilizing state information ofthe computer readable program instructions to personalize the electroniccircuitry, in order to perform aspects of the present embodiments.

Aspects of the present embodiments are described herein with referenceto flowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products. It will be understood thateach block of the flowchart illustrations and/or block diagrams, andcombinations of blocks in the flowchart illustrations and/or blockdiagrams, can be implemented by computer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments. In this regard, each block in the flowchart or blockdiagrams may represent a module, segment, or portion of code, whichcomprises one or more executable instructions for implementing thespecified logical function(s). It should also be noted that, in somealternative implementations, the functions noted in the block may occurout of the order noted in the figures. For example, two blocks shown insuccession may, in fact, be executed substantially concurrently, or theblocks may sometimes be executed in the reverse order, depending uponthe functionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts, or combinations of special purpose hardware andcomputer instructions.

The descriptions of the various embodiments have been presented forpurposes of illustration, but are not intended to be exhaustive orlimited to the embodiments disclosed. Many modifications and variationswill be apparent to those of ordinary skill in the art without departingfrom the scope and spirit of the described embodiments. The terminologyused herein was chosen to best explain the principles of theembodiments, the practical application or technical improvement overtechnologies found in the marketplace, or to enable others of ordinaryskill in the art to understand the embodiments disclosed herein.

What is claimed is:
 1. An apparatus comprising: an imaging deviceoperatively coupled to a processor, the imaging device to capture andtransmit an image of a part of an assembly, the assembly having anintegrated visual code associated with the part, the visual codeincluding location information of at least one hardware component; andthe processor in communication with memory, the processor to receive theimage from the imaging device, the processor programmed to: obtain anidentification of a target hardware component in the assembly; acquirethe image including the visual code; decode the visual code to obtain anidentification of the at least one hardware component in the part;determine that the target hardware component is included in the partresponsive to the identification of the target hardware componentmatching the identification of the at least one hardware component; andresponsive to the determination the target component is included in thepart, identify the target hardware component based on the locationinformation.
 2. The apparatus according to claim 1, wherein obtainingthe identification of the target hardware component comprises at leastone of: reading the identification from a display device associated withthe assembly; determining the identification based on light emitted by alight emitting device associated with the target hardware component; andreceiving the identification via a communication port associated withthe assembly.
 3. The apparatus according to claim 1, wherein theprocessor is further programmed to obtain additional information relatedto at least one of the assembly and a host device where the assembly islocated, the additional information encoded in an assembly visual codeassociated with the assembly.
 4. The apparatus according to claim 1,further comprising the processor programmed to: calibrate the acquiredimage to at least obtain a top view of the visual code for the decoding.5. The apparatus according to claim 1, further comprising the processorprogrammed to: provide guidance pointing to a further part of theassembly responsive to determining that the target hardware component isnot included in the part.
 6. The apparatus according to claim 5, whereinthe guidance is provided based on predefined location information of avisual code associated with the further part.
 7. The apparatus accordingto claim 1, wherein the visual code associated with the part includes aquick response (QR) code.
 8. An apparatus, comprising: at least onehardware component of an assembly; an identification providing moduleconfigured to provide an identification of a target hardware componentof the at least one hardware component; at least one visual codeintegrated into the assembly, each visual code associated with a part ofthe assembly and each visual code including an identification of acomponent of the at least one component located in the part and locationinformation of the at least one hardware component; a diagnosis deviceto: decode the visual code to obtain an identification of the at leastone hardware component of the assembly, determine the target hardwarecomponent is included in the part in response to identification of amatch of the target hardware component and the at least one hardwarecomponent, and identify the target hardware component based on thelocation information.
 9. The apparatus according to claim 8, wherein thevisual code includes a quick response (QR) code.
 10. The apparatusaccording to claim 8, wherein each visual code further includes locationinformation of the at least one hardware component located in theassociated part.
 11. The apparatus of claim 8, wherein the visual codeis integrated into the assembly.
 12. The apparatus of claim 8, whereinthe assembly is a motherboard.
 13. The apparatus of claim 8, wherein theat least one visual code is presented on a display device.
 14. Theapparatus of claim 13, wherein the display device is an electronic inkdisplay.
 15. The apparatus of claim 8, wherein the visual code includesinformation selected from the group consisting of: location, model, andproduction date.
 16. The apparatus of claim 1, wherein the assembly is amotherboard.
 17. The apparatus of claim 1, wherein the visual codeincludes information selected from the group consisting of: location,model, and production date.
 18. The apparatus of claim 8, wherein theidentification providing module is selected from the group consistingof: a display device associated with the assembly, a light emittingdevice associated with the target hardware component, and acommunication port associated with the assembly.